/*
 * hashtable.h
 *
 *  Created on: 2020年12月22日
 *      Author: Administrator
 */

#ifndef HASHTABLE_H_
#define HASHTABLE_H_

#define SIZE 20

typedef int KeyType;
typedef struct HashTable {
	KeyType table[SIZE];
} HashTable;

void init_hash_table(HashTable* ht);
/**
 * 散列函数
 * 除
 */
int hash(KeyType key);
/**
 * 线性探测
 * 当散列表冲突时，可以使用线性探测获得下一个可以使用的地址
 * 返回值为下一个存储地址
 */
int linear_probing(HashTable* ht, int addr);

void create_hash_table(HashTable* ht, int length, int* array);
/**
 * 查找线性表
 * 当关键字在线性表中存在时，返回存储地址；否则，返回-1
 */
int search_hash_table(HashTable* ht, KeyType key);

void print_hash_table(HashTable* ht);

#endif /* HASHTABLE_H_ */
